package com.tupu.service.admin;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tupu.entity.admin.*;

import java.io.IOException;
import java.net.URISyntaxException;
import java.util.List;

public interface LabelService extends IService<LabelInfo> {

    //读取csv文件，上传导入mysql，标签和属性
    List<List<String>> addLabelAndProperty(String file_path, Long node_id) throws IOException, URISyntaxException;

    //标签列表，根据node_id关联首页图谱列表 标签模糊搜索,分页
    Page<LabelInfo> pageCondition(Long node_id, String label, Integer page, Integer size);

    //根据id更新标签及属性+实例、实例关系
    void updateLabelAndAttrsAndNode(LabelInfo label);

    //通过标签id查找一条标签详情
    LabelInfo findOne(Long id);

    //新增标签,属性
    void addLabel(LabelInfo label);

    //新增标签,属性（可视化）
    LabelVisualized addLabelVis(LabelInfo label);

    //知识管理-数据管理-本体、标签数据
    Page<LabelInfo> labelDataManagement(String name, Long node_id, Long page, Long size);

    //标签首页不分页
    List<LabelInfo> listLabel(Long node_id);

    //修改标签颜色
    void updateLabelColor(LabelVisualizedParam labelParam);

    //根据id 集合删除本体 及属性
    void delByIds(List<Long> ids);

    //根据实例id 查询标签下所有属性
    List<LabelPropertyInfo> findAttrsByName(Long case_id);

    //知识构建首页 标签列表，根据node_id关联首页图谱列表 可视化
    LabelVisualized findByNodeIdVis(Long node_id);

    //通过本体id（label_id）查询关系数据
    List<LabelInfo> findList(List<Integer> ids);

    //根据本体名字搜索
    List<LabelInfo> findByName(String label);

    //删除标签，标签属性，关系关联表，节点，节点关系
    void del(Long label_id, Long node_id);

    //标签关系数据
    Page<RelationBuildingInfo> labelRelationDataManagement(Long node_id, String name, Long page, Long size);

    //本体、标签数据不分页
    List<LabelInfo> labelDataManagementAll(Long node_id);
}
